package cycles.util.jdbc.orm;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 单字段指定与列的对应关系
 * 
 * @author cycles
 * 
 */
@Target(ElementType.FIELD)
// 与类属性对应
@Retention(RetentionPolicy.RUNTIME)
// 运行时需要
@Inherited
// 继承父类标注
@Documented
public @interface DBField {

	/**
	 * 与数据库映射的类型<br />
	 * 0 ： 名称一致，基本类型(默认) <br />
	 * 1 ： 此字段不在数据库中<br />
	 * 2 ： 请检查其他参数说明(名称不一致，或需要特殊的解析类)
	 * 
	 * @return 默认：名称一致，基本类型
	 */
	FieldMapType value() default FieldMapType.DEFAULT_MAP;

	/**
	 * 如果名称不一致，此字段指定数据库中的字段名称
	 * 
	 * @return 数据库字段名称串
	 */
	String dbfield() default "";

	/**
	 * 如果需要更复杂的解析，此字段指定解析类<br />
	 * 待定 : 是否定义一批特殊的解析类，如int2str，str2intlist等<br />
	 * 否决 : 类型转换进行类单独定义，对于不同默认值的情况还是开发者自己明确比较好
	 * 
	 * 
	 * @return 解析类的全路径
	 */
	String parser() default "";

}
